﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TreinamentoNDD.MedindoAFebreIII
{
    public class Aluguel
    {
        private Cliente _cliente;
        private List<Tema> _lstTema = new List<Tema>();
        private DateTime _dataHoraInicio;
        private DateTime _dataHoraFinal;
        private Endereco _endereco;

        public DateTime DataHoraInicio
        {
            get { return _dataHoraInicio; }
            set { _dataHoraInicio = value; }
        }

        public DateTime DataHoraFinal
        {
            get { return _dataHoraFinal; }
            set { _dataHoraFinal = value; }
        }

        public Cliente Cliente
        {
            get { return _cliente; }
            set { _cliente = value; }
        }

        public Endereco Endereco
        {
            get { return _endereco; }
            set { _endereco = value; }
        }

        public void AdicionarTema(Tema tema)
        {
            _lstTema.Add(tema);
        }

        public double GetSubTotal()
        {
            return Convert.ToDouble(_lstTema.Sum(x => x.GetSubTotal()));
        }

        public double GetValorTotal()
        {
            double subTotal = GetSubTotal();
            double vlrDesconto = subTotal * CalcularDesconto() / 100;
            return subTotal - vlrDesconto;
        }

        private double CalcularDesconto()
        {
            if (_cliente.NrAlugueis >= 10)
            {
                return 10;
            }
            else if (_cliente.NrAlugueis < 10 && _cliente.NrAlugueis >= 5)
            {
                return 7;
            }
            else if (_cliente.NrAlugueis < 5 && _cliente.NrAlugueis >= 1)
            {
                return 3;
            }
            else
            {
                return 0;
            }
        }

        public Tema PesquisarTema(string nomeTema)
        {
            return (Tema)_lstTema.Where(x => x.Nome.Equals(nomeTema));
        }

        public void RemoverTema(Tema tema)
        {
            _lstTema.Remove(tema);
        }
    }
}